exports=module.exports={};

exports.parse=(args,defaults,map)=>{
    var opts={};

    //默认参数
    if('[object Object]' == Object.prototype.toString.call(defaults))opts=defaults;
    if('[object Object]' != Object.prototype.toString.call(map))map={};

    //解析长格式

    for(var arg of args){
        if(arg.startsWith('--')){
            if(~arg.indexOf('=')){
                let pair=arg.substr(2).split('=');
                let key=pair[0],val=pair[1];
                if('depth'==key && /^\d+$/.test(val)){
                    opts[key]=Number(val);
                }else{
                    opts[key]=val;
                }
            }else{
                opts[arg.substr(2)]=true;
            }
        }else if(arg.startsWith('-')){
            if(~arg.indexOf('=')){
                let pair=arg.substr(1).split('=');
                if(map[pair[0]]){
                    let key=map[pair[0]],val=pair[1];
                    if('depth'==key && /^\d+$/.test(val)){
                        opts[key]=Number(val);
                    }else{
                        opts[key]=val;
                    }
                }
            }else{
                if(map[arg.substr(1)])opts[map[arg.substr(1)]]=true;
            }
        }

    }

    //解析短格式



    //console.log('opts:',opts);
    return opts;
}